<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of TipoPagamentoDAO
 *
 * @author thales
 */
class TipoPagamentoDAO {
    public $conn = null;
    
    public function __construct() {
        $this->conn = DB::getConn();
    }
    
    /**
     * Método responsável por salva um perfil relacionado ao usuário.<br>
     * 
     * @param UsuarioPerfilVO $objUsuarioPerfil
     * @return true ou false com Excepition. 
     */
    
    public function pesquisarDados(VendasBO $objTipoPagamentoBO){
        $sql = 'select * from tipopagamento where descricao like ?';
        
        $stt = $this->conn->prepare($sql);  
        $stt->bindValue(1, $objTipoPagamentoBO->getTipoPagamento()->getDescricao(),PDO::PARAM_STR);
        
        if ( !$stt->execute() ){
            throw new Exception('Não foi possível pesquisar os dados do tipo de pagamento!' . __METHOD__ );
        } 
       
        
        $listaObjTipoPagamentoBO = array();
        while( $tmp = $stt->fetch(PDO::FETCH_ASSOC) ){
            
            $objTipoPagamentoBO = new VendasBO();
            $objTipoPagamentoBO->getTipoPagamento()->setId($tmp['id']);
            $objTipoPagamentoBO->getTipoPagamento()->setDescricao($tmp['descricao']); 
            
            $listaObjTipoPagamentoBO[] = $objTipoPagamentoBO;
            
        }
        
        return $listaObjTipoPagamentoBO;
    }
    
    public function pesquisarTodos(){
        $sql = 'select * from tipopagamento';
        
        $stt = $this->conn->prepare($sql);  
        
        if ( !$stt->execute() ){
            throw new Exception('Não foi possível pesquisar os dados do tipo de pagamento!' . __METHOD__ );
        } 
       
        $listaObjPagamentoBO = array();
        while( $tmp = $stt->fetch(PDO::FETCH_ASSOC) ){
            
            $objPagamentoBO = new VendasBO();
            $objPagamentoBO->getDestino()->setId($tmp['id']);
            $objPagamentoBO->getDestino()->setDescricao($tmp['descricao']); 
            
            $listaObjPagamentoBO[] = $objPagamentoBO;
            
        }
        //var_dump($listaObjDestinoBO);die();
        return $listaObjPagamentoBO;
    }
    
    public function pesquisar( VendasBO $objTipoPagamentoBO){
        $sql = 'select * from tipopagamento where id = ?';
        
        $stt = $this->conn->prepare($sql);  
        $stt->bindValue(1, $objTipoPagamentoBO->getTipoPagamento()->getId(),PDO::PARAM_INT);
        
        
        
        if ( !$stt->execute() ){
            throw new Exception('Não foi possível pegar os dados do tipo de pagamento!' . __METHOD__ );
        } 

        $tmp = $stt->fetch(PDO::FETCH_ASSOC);
        
        $objTipoPagamentoBO->getTipoPagamento()->setId($tmp['id']);
        $objTipoPagamentoBO->getTipoPagamento()->setDescricao($tmp['descricao']);

        return true;   
    }
    
    public function alterar(TipoPagamentoVO $objTipoPagamento){
        $sql = 'Update 
                    tipopagamento 
                set 
                    descricao = :descricao
                where
                    id = :id';
        
        $descricao = $objTipoPagamento->getDescricao();
        $id = $objTipoPagamento->getId();
        
        $stt = $this->conn->prepare($sql);  
        $stt->bindParam(':descricao', $descricao);
        $stt->bindParam(':id', $id);
        
        if ( !$stt->execute() ){
            throw new Exception('Não foi possível salvar o cliente!<br>' . var_dump($stt->errorInfo()) );
        } 
        
        LogDAO::getInstance()->salvar(__METHOD__, $objTipoPagamento->getId(), __CLASS__);
        
        return true;
        
    }
    
    public function salvar(TipoPagamentoVO $objTipoPagamento){
        $sql = 'Insert into tipopagamento (descricao) values (?)';
        
        $stt = $this->conn->prepare($sql);  
        $stt->bindValue(1, $objTipoPagamento->getDescricao(),PDO::PARAM_STR);
        
        if ( !$stt->execute() ){
            throw new Exception('Não foi possível salvar o cliente!<br>' . var_dump($stt->errorInfo()) );
        } 
        
        LogDAO::getInstance()->salvar(__METHOD__, $this->conn->lastInsertId(), __CLASS__);
        
        return true;;
    }
    
    public function excluir(TipoPagamentoVO $objTipoPagamentoVO ){
        $sql = 'delete from tipopagamento where id = ?';
        
        $stt = $this->conn->prepare($sql);
        $stt->bindValue(1, $objTipoPagamentoVO->getId(), PDO::PARAM_INT);
        
        if ( !$stt->execute() ){
            throw new Exception('Não foi possível salvar o cliente!<br>' . var_dump($stt->errorInfo()) );
        } 
        
        LogDAO::getInstance()->salvar(__METHOD__, $objTipoPagamentoVO->getId(), __CLASS__);
        
        return true;
    }
    
}

?>
